package cn.edu.tcu.controller.admin;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import cn.edu.tcu.bean.AdminBean;
import cn.edu.tcu.dao.admin.DaoFactory;
import cn.edu.tcu.myutils.MyUtil;

@WebServlet("/AdminInfoAddServlet")
@MultipartConfig(maxFileSize=1024*1024*5)
public class AdminInfoAddServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 清空修改使用的session中缓存的内容(防止新增操作看到修改操作的内容)
		request.getSession().removeAttribute("modifyAdminB");
		
		// 获取客户端request表单数据
		AdminBean adminB = MyUtil.convertRequestParameter2Bean(request, AdminBean.class,"updatefiles/adminImgs/","admin");
		MyUtil.logRootLogger.info("转换的Bean："+adminB.toString());
		/////////////////////////
		// servlet 3.0 文件上传处理
		/* // 获取request中的文件内容部分对象
		Part fPart = request.getPart("adminImg");
		// 进行文件上传处理
		if(fPart != null){
			// 打印上传文件的相关信息
			System.out.println("getContentType:"+fPart.getContentType());
			System.out.println("getName:"+fPart.getName());
			System.out.println("getSubmittedFileName:"+fPart.getSubmittedFileName());
			System.out.println("getSize:"+fPart.getSize());
			
			// 将文件二进制字节流保存到服务器的指定目录下
			// 获取网站的根目录（相对于服务器的盘符）
			String realPath = request.getServletContext().getRealPath("/");
			MyUtil.logRootLogger.info("上传文件保存路径："+realPath);
			// 获取文件上传是提交的文件名
			String fileSubmitName = fPart.getSubmittedFileName();
			// 提取保存文件的后缀类型
			String fileType = fileSubmitName.substring(fileSubmitName.lastIndexOf('.'));
			// 重新组合保存文件的文件名：admin_用户名_随机码.文件后缀
			String fileSaveName = "admin_"+adminB.getAdminName()+"_"+UUID.randomUUID().toString()+fileType;
			MyUtil.logRootLogger.info("上传文件名："+fileSaveName);
			//保存的文件路径（相对于根路径的文件路径名）
			String fileSavePath = "updatefiles/adminImgs/"+fileSaveName;			
			System.out.println("======:"+realPath+fileSaveName);
			// 如果存储上传文件的文件夹不存在，则创建文件夹
			File f = new File(realPath + "updatefiles/adminImgs/");
			if (!f.exists()) {
				f.mkdirs();
			}
			// 上传文件
			fPart.write(realPath+fileSavePath);
			// 将文件保存的路径赋值给bean实体的属性
			adminB.setAdminImg(fileSavePath);			
		}*/
		////////////////////////
		// 调用dao层进行数据库保存处理
		int i = 1;//DaoFactory.getAdminDaoInstance().saveOrUpdateAdminInfo(adminB);
		MyUtil.logRootLogger.info("数据保存结果：" + i);
		// 保存成功之后的数据转发处理
		if (i > 0) {
			// 保存成功
			// 查询获取要显示的数据集合
			List<AdminBean> lstAdmins =  DaoFactory.getAdminDaoInstance().getAllAdminInfo(0);
			// 将查询的结果集缓存到session中，在前端使用el表达式进行解析显示
			request.getSession().setAttribute("lstAdmins", lstAdmins);
			// 跳转数据保存成功页面
			response.sendRedirect("adminLogined/adminInfoMan/adminInfoAddDetail.jsp");
		} else {
			// 跳回数据新增页面
			response.sendRedirect("adminLogined/adminInfoMan/adminInfoAdd.jsp");
		}
	}

}
